#ifndef ISTATE_H
#define ISTATE_H
#include <QString>
#include <QObject>

class QAction;
class Context;

class AbstractState: public QObject
{
    Q_OBJECT

public:
    explicit AbstractState(Context *context, const QString name, const QString image);
    ~AbstractState();

    const QString getName();
    const QString getImageName();
    void setAction(QAction*);

public slots:
    virtual void activate();
    virtual void deactivate();
    virtual void mapClicked(float x, float y) = 0;

private:
    QString _stateName;
    QString _imageName;
    QAction* _action;

protected:
    Context* _context;

signals:
    void activated();
};

#endif // ISTATE_H
